//
//  YFStatusPictureView.swift
//  仿新浪微博
//
//  Created by 杨帆 on 16/7/6.
//  Copyright © 2016年 杨帆. All rights reserved.
//

import UIKit

class YFStatusPictureView: UIView {
    
    var viewModel:  YFStatusViewModel? {
    
        didSet {
        
            calcViewSize()
            
            // 设置 urls
            urls = viewModel?.picURLs
        }
    }
    
    // 根据视图模型的配图视图大小 调整显示内容
    private func calcViewSize() {
        
        // 处理宽度
        // 1> 单图 根据配图视图的大小 修改 subviews[0] 的高度
        if viewModel?.picURLs?.count == 1 {
            
            let viewSize = viewModel?.pictureViewSize ?? CGSize()
            
            // a) 获取第0个图像视图
            let v = subviews[0]
            v.frame = CGRect(x: 0,
                             y: YFStatusPictureViewOutterMargin,
                             width:  viewSize.width,
                             height: viewSize.height - YFStatusPictureViewOutterMargin)
        } else {
        
            // 2> 多图 无图 恢复 subview[0] 的宽度 保证九宫格布局的完整
            let v = subviews[0]
            v.frame = CGRect(x: 0,
                             y: YFStatusPictureViewOutterMargin,
                             width: YFStatusPictureItemWidth,
                             height: YFStatusPictureItemWidth)
        }
    
        // 修改高度约束
        heightCons.constant = viewModel?.pictureViewSize.height ?? 0
    }
    
    // 配图视图的数组
    private var urls: [YFStatusPicture]? {
        didSet {
        
            // 1. 隐藏所有的 imageView
            for v in subviews {
            
                v.isHidden = true
            }
            
            // 2. 遍历 urls 数组 顺序设置图像
            var index = 0
            
            for url in urls ?? [] {
            
                // 获得对应索引的 imageView
                let iv = subviews[index] as! UIImageView
                
                // 4张图像处理
                if index == 1 && urls?.count == 4 {
                
                    index += 1
                }
                
                // 设置图像
                iv.YF_setImage(urlString: url.thumbnail_pic, placeholderImage: nil)


                //显示图像
                iv.isHidden = false
                
                index += 1

         
            }
        }
    }

    @IBOutlet weak var heightCons: NSLayoutConstraint!

    override func awakeFromNib() {
        setupUI()
    }
}

// MARK: - 设置界面
extension YFStatusPictureView {
    // 3. 不要动态创建控件
    private func setupUI() {
        
        // 设置背景颜色
        backgroundColor = superview?.backgroundColor
    
        // 超出边界的内容不显示
        clipsToBounds = true
        
        let count = 3
        let rect = CGRect(x: 0,
                          y: YFStatusPictureViewOutterMargin,
                          width: YFStatusPictureItemWidth,
                          height: YFStatusPictureItemWidth)
        
        // 循环创建9个imageView
        for i in 0..<count * count {
        
            let iv = UIImageView()
            
            iv.backgroundColor = UIColor.red()
            
            // 行 -> Y
            let row = CGFloat(i / count)
            // 列 -> X
            let col = CGFloat(i % count)
            
            let xOffset = col * (YFStatusPictureItemWidth + YFStatusPictureViewInnerMargin)
            let yOffset = row * (YFStatusPictureItemWidth + YFStatusPictureViewInnerMargin)
            
            iv.frame = rect.offsetBy(dx: xOffset, dy: yOffset)
            
            addSubview(iv)
        }

    }
}
